package com.newangels.service;

import java.util.List;
import java.util.Map;

/**
 * 智能体管理
 *
 * @author: TangLiang
 * @date: 2020/5/11 16:53
 * @since: 1.0
 */
public interface AgentManagerService {

    /**
     * 查询Agent
     *
     * @param AGENT_ID_
     * @param AGENT_CODE_
     * @param AGENT_NAME_
     * @param AGENT_URL_
     * @param AGENT_ARGUMENTS_
     * @param AGENT_STATE_
     * @param STATE_
     * @param AGENT_COST_
     * @param AGENT_SOURCE_
     * @param page
     * @param limit
     * @return
     */
    List<Map<String, Object>> selectAgents(String AGENT_ID_, String AGENT_CODE_, String AGENT_NAME_, String AGENT_URL_, String AGENT_ARGUMENTS_, String AGENT_STATE_, String STATE_, Integer AGENT_COST_, String AGENT_SOURCE_, Integer page, Integer limit);

    /**
     * 获取总数
     *
     * @param AGENT_ID_
     * @param AGENT_CODE_
     * @param AGENT_NAME_
     * @param AGENT_URL_
     * @param AGENT_ARGUMENTS_
     * @param AGENT_STATE_
     * @param STATE_
     * @param AGENT_COST_
     * @param AGENT_SOURCE_
     * @return
     */
    int getcount(String AGENT_ID_, String AGENT_CODE_, String AGENT_NAME_, String AGENT_URL_, String AGENT_ARGUMENTS_, String AGENT_STATE_, String STATE_, Integer AGENT_COST_, String AGENT_SOURCE_);

    /**
     * 修改Agent启动状态
     *
     * @param AGENT_CODE_  agent编码
     * @param AGENT_STATE_ agent状态
     * @return
     */
    int updateSTATE(String AGENT_CODE_, String AGENT_STATE_);

    /**
     * 新增Agent
     *
     * @param AGENT_ID_
     * @param AGENT_CODE_
     * @param AGENT_NAME_
     * @param AGENT_URL_
     * @param AGENT_ARGUMENTS_
     * @param AGENT_STATE_
     * @param STATE_
     * @param AGENT_COST_
     * @param AGENT_SOURCE_
     * @param AGENT_EXCEPTION_
     * @return
     */
    int insertAgentManager(String AGENT_ID_, String AGENT_CODE_, String AGENT_NAME_, String AGENT_URL_, String AGENT_ARGUMENTS_, String AGENT_STATE_, String STATE_, Integer AGENT_COST_, String AGENT_SOURCE_, String AGENT_EXCEPTION_);

    /**
     * 加载 Agent
     *
     * @param AGENT_ID_
     * @return
     */
    Map<String, Object> loadAgent(String AGENT_ID_);

    /**
     * 修改Agent
     *
     * @param AGENT_ID_
     * @param AGENT_CODE_
     * @param AGENT_NAME_
     * @param AGENT_URL_
     * @param AGENT_ARGUMENTS_
     * @param AGENT_COST_
     * @param AGENT_SOURCE_
     * @return
     */
    int updateAgent(String AGENT_ID_, String AGENT_CODE_, String AGENT_NAME_, String AGENT_URL_, String AGENT_ARGUMENTS_, Integer AGENT_COST_, String AGENT_SOURCE_);

    /**
     * 删除Agent
     *
     * @param AGENT_ID_
     * @return
     */
    int deleteAgent(String AGENT_ID_);

    /**
     * 批量删除Agent
     *
     * @param AgentList AGENT_ID_集合
     * @return
     */
    int deleteAgentList(List<String> AgentList);

    /**
     * 修改Agent运行状态
     *
     * @param AGENT_STATE_  修改后的状态
     * @param AGENT_STATE_1 修改前的状态
     * @return
     */
    int updateAllAgentState(String AGENT_STATE_, String AGENT_STATE_1);
}
